package com.ohimy.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.hibernate.criterion.Order;
import org.springframework.stereotype.Service;

import com.ohimy.dao.impl.NewsDao;
import com.ohimy.dao.impl.NewsSortDao;
import com.ohimy.dao.impl.UserDao;
import com.ohimy.entity.News;
import com.ohimy.entity.NewsSort;

@Service("newsService")
public class NewsService {

	@Resource(name = "userDao")
	private UserDao userDao;

	@Resource(name = "newsDao")
	private NewsDao newsDao;

	@Resource(name = "newsSortDao")
	private NewsSortDao newsSortDao;

	/**
	 * 得到所有栏目
	 * 
	 * @return
	 */
	public List<NewsSort> getAllNewsSort() {
		return newsSortDao.findAll();
	}

	/**
	 * 通过id得到栏目
	 * 
	 * @param id
	 * @return
	 */
	public NewsSort getNewsSort(long id) {
		return newsSortDao.get(id);
	}

	/**
	 * 新建一个栏目
	 * 
	 * @param newsSort
	 */
	public void insertNewsSort(NewsSort newsSort) {
		newsSortDao.save(newsSort);
	}

	/**
	 * 更新一个栏目
	 * 
	 * @param newsSort
	 */
	public void updateNewsSort(NewsSort newsSort) {
		newsSortDao.update(newsSort);
	}

	/**
	 * 删除一个栏目
	 * 
	 * @param newsSort
	 */
	public void deleteNewsSort(long id) {
		newsSortDao.delete(newsSortDao.load(id));
	}

	/**
	 * 得到所有新闻
	 * 
	 * @return
	 */
	public List<News> getAllNews() {
		return newsDao.findAll();
	}

	/**
	 * 通过id得到新闻
	 * 
	 * @param id
	 * @return
	 */
	public News getNews(long id) {
		return newsDao.get(id);
	}

	/**
	 * 查看新闻的分页
	 * 
	 * @param id
	 * @param firstResult
	 * @param maxResults
	 * @return
	 */
	public List<News> getAllNewsByPager(int firstResult, int maxResult) {
		return newsDao.findByCriteria(firstResult, maxResult, Order.desc("id"));
	}

	/**
	 * 新建一个新闻
	 * 
	 * @param newsSort
	 */
	public void insertNews(News news) {
		newsDao.save(news);
	}

	/**
	 * 更新一个新闻
	 * 
	 * @param newsSort
	 */
	public void updateNews(News news) {
		newsDao.update(news);
	}

	/**
	 * 删除一个新闻
	 * 
	 * @param newsSort
	 */
	public void deleteNews(long id) {
		newsDao.delete(newsDao.load(id));
	}

	/**
	 * 返回新闻总条数
	 * 
	 * @return
	 */
	public long getNewsCount() {
		return newsDao.findAll().size();
	}

	/* ********************************* */
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}

	public void setNewsDao(NewsDao newsDao) {
		this.newsDao = newsDao;
	}

	public void setNewsSortDao(NewsSortDao newsSortDao) {
		this.newsSortDao = newsSortDao;
	}

}
